package design_pattern.trigger;

import design_pattern.trigger.frame.EventDispatch;
import design_pattern.trigger.frame.Product;
import design_pattern.trigger.frame.ProductManager;

/**
 * @version 1.0.0
 * Created by cyd on 2022-08-29 17:14:32
 * @ClassName : design_pattern.trigger.Client
 * @Description : 类描述
 */
public class ClientTest {


    /**
     * 达成的效果是，当你使用productManager操作product
     * 订阅操作事件的对象，会响应的做出反应
     */
    public static void main(String[] args) {
        // 获得事件分发中心
        EventDispatch dispatch = EventDispatch.getDispatch();

        // 接受平民对事件的处理
        dispatch.registerCustomer(new BadMan());

        // 接受贵族对事件的处理
        dispatch.registerCustomer(new NobleMan());

        //建立一个原子弹生产工厂
        ProductManager productManager = new ProductManager();

        //制造一个产品
        System.out.println("=====模拟创建产品事件======");
        System.out.println("创建一个叫做小男孩的原子弹");
        Product product = productManager.createProduct("小男孩原子弹");

        //修改一个产品
        System.out.println("\n=====模拟修改产品事件======");
        System.out.println("把小男孩原子弹修改为胖子号原子弹");
        productManager.editProduct(product, "胖子号原子弹");

        //再克隆一个原子弹
        System.out.println("\n=====模拟修改克隆产品事件======");
        System.out.println("克隆胖子号原子弹");
        productManager.clone(product);

        //遗弃一个产品
        System.out.println("\n=====模拟销毁产品事件======");
        System.out.println("销毁胖子号原子弹");
        productManager.abandonProduct(product);
    }

}

